我正在尝试在类似于资产管道中使用Rails
from 。我想要一个在所有模块中都可用的全局变量。@rails/ujs
webpacker
ts-loader
Rails
Rails
目前,我可以通过在每个模块中导入来规避问题,但是,为了解决问题,我们如何制作一个ts-loader
不会哭泣的全局模块。
首先,我已经将 jquery 配置为$
. 我不明白为什么@rails/ujs
asRails
没有类似的工作。这是我的(简化的)配置:
// tsconfig.json
{
"compilerOptions": {
...
"lib": ["dom", "es2020"],
"module": "esnext",
"moduleResolution": "node",
"target": "es5"
},
"exclude": ["**/*.spec.ts", "node_modules", "vendor", "public"]
...
}
// config/webpack/loaders/typescript.js
...
module.exports = {
rules: [
{
...
loader: 'ts-loader',
options: { transpileOnly: true },
},
...
],
resolve: { plugins: ... },
}
// config/webpack/environment.js
...
// Globals
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
$: 'jquery',
Rails: ['@rails/ujs'], /* also tried Rails: '@rails/ujs', */
}))
...
// app/.../packs/application/index.ts
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
import './rails-inquirer'
// app/.../packs/application/rails-inquirer/index.ts
console.log(Rails)
$ bin/webpack --display errors-only
TS2304: Cannot find name 'Rails'
相关:这个类似的问题不是我的问题的重复。这个问题没有解决 Typescript。我遵循的答案也没有。但是,它确实修复了我的eslint
. 我认为这是一个ts-loader
配置问题。