我正在使用Rails v5和Webpacker v2。到目前为止,一切都很顺利,但我遇到了一个问题:如何将Rails助手暴露给我的TypeScript。
我知道Webpacker附带rails-erb-loader,因此我期望我可以将.erb添加到TypeScript文件中,然后在其他地方导入该文件:
但是,即使我修改了TypeScript加载器以包含ERB文件,Webpack仍然找不到“rails”文件:
我知道Webpacker附带rails-erb-loader,因此我期望我可以将.erb添加到TypeScript文件中,然后在其他地方导入该文件:
// app/javascript/utils/rails.ts.erb
export const env = "<%= Rails.env %>"
export function isEnv(envName: string) {
return env == envName
}
// app/javascript/packs/application.ts
import { env } from "../utils/rails"
但是,即使我修改了TypeScript加载器以包含ERB文件,Webpack仍然找不到“rails”文件:
module.exports = {
test: /.ts(\.erb)?$/,
loader: 'ts-loader'
}
我看到的只有:
error TS2307: Cannot find module '../utils/rails'.
如何将Rails的帮助程序和变量暴露给我的JavaScript?
process.env
(VM265:1 Uncaught ReferenceError: process is not defined)。也许有一些预处理的方法? - fnyDefinePlugin
(https://gist.github.com/haf/f671f1113d2c5dead5a7#file-gistfile1-txt-L109-L113),像这样`new webpack.DefinePlugin({"process.env": {RAILS_ENV: process.env.RAILS_ENV}}),然后你就可以在客户端中使用
process.env.RAILS_ENV`了。 - Francesco Belladonna